package com.limou.controller;

import com.github.pagehelper.PageInfo;
import com.limou.pojo.Product;
import com.limou.service.ProductService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import java.util.List;

@Controller
@RequestMapping("/product")
public class ProductController {

    @Autowired
    private ProductService productService;

    /**
     * 展示所有商品（弃用）
     * @param model
     * @return
     */
    // @RequestMapping("/list")
    public String list(Model model) {

        List<Product> productList = productService.list();

        model.addAttribute("productList", productList);

        return "productList";
    }

    /**
     * 分页相关（查询所有）：
     * 获取分页信息
     * @param pageNum 当前是第几页
     * @param model
     * @return
     */
    @RequestMapping("/page")
    public String getProductPage(Integer pageNum, Model model) {
        // 如果前端没有传递页号数据（是由其他链接直接重定向过来，那么就设置初始页号为1）
        if (pageNum == null || pageNum == 0) {
            pageNum = 1;
        }

        // 获取商品的分页信息
        PageInfo<Product> page = productService.getProductPage(pageNum);
        // 将分页数据共享到请求域中
        model.addAttribute("page", page);

        // 跳转到商品list的jsp
        return "productList";

    }


    /**
     * 根据商品名称搜索商品（分页展示）
     * @param model
     * @param productName 商品名称
     * @return
     */
    @RequestMapping("/queryProductByNamePage")
    public String queryProductByNamePage(Model model, String productName, Integer pageNum) {
        // 如果前端没有传递页号数据（是由其他链接直接重定向过来，那么就设置初始页号为1）
        if (pageNum == null || pageNum == 0) {
            pageNum = 1;
        }

        PageInfo<Product> pageByCondition = productService.getProductPageByCondition(pageNum, productName);

        model.addAttribute("pageByCondition", pageByCondition);

        return "productList";
    }

    /**
     * 根据商品名称搜索商品(弃用)
     * @param model
     * @param productName 商品名称
     * @return
     */
    // @RequestMapping("/queryProductByName")
    public String queryProductByName(Model model, String productName) {

        List<Product> productList = productService.queryProductByName(productName);

        model.addAttribute("productList", productList);

        return "productList";
    }


    /**
     * 跳转到修改商品页面，同时携带商品id数据
     * @param model
     * @param productId
     * @return
     */
    @RequestMapping("/turnToUpdateProductPage")
    public String turnToUpdateProductPage(Model model, Integer productId) {
        Product product = productService.queryProductById(productId);

        // 输出测试
        System.out.println("产品信息：" + product);

        model.addAttribute("product", product);

        return "updateProduct";
    }


    /**
     * 更新商品
     * @param product
     * @return
     */
    @RequestMapping("/updateProduct")
    public String updateProduct(Product product) {

        productService.updateProduct(product);

        // System.out.println("更新成功");

        // 重定向到查询分页页面
        return "redirect:page";
    }

    @RequestMapping("/deleteProductById")
    public String deleteProductById(String productId) {

        productService.deleteProductById(productId);

        // 重定向到分页查询页面
        return "redirect:page";
    }

    /**
     * 跳转到添加商品页面
     * @return
     */
    @RequestMapping("/turnToAddProductPage")
    public String turnToUpdateProductPage() {
        // 跳转到 添加页面
        return "addProduct";
    }

    /**
     * 添加商品
     * @param product
     * @return
     */
    @RequestMapping("/addProduct")
    public String addProduct(Product product) {

        productService.addProduct(product);

        // 重定向到分页页面
        return "redirect:page";
    }


}
